From 02f82c278807571fd2a6a88e7921f5f11f8975d3 Mon Sep 17 00:00:00 2001 From: "iap10@labyrinth.cl.cam.ac.uk" Date: Tue, 8 Feb 2005 03:14:41 +0000 Subject: [PATCH] bitkeeper revision 1.1159.223.79 (42082ea1obdbIutzD0IY-9Fdcf7Exw) Fix to memory debugging audit code. Signed-off-by: ian@xensource.com --- xen/arch/x86/memory.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/memory.c b/xen/arch/x86/memory.c index 486d6ba407..e438ed68b8 100644 --- a/xen/arch/x86/memory.c +++ b/xen/arch/x86/memory.c @@ -2279,7 +2279,6 @@ void audit_domain(struct domain *d) } /* PHASE 3 */ - list_ent = d->page_list.next; for ( i = 0; (list_ent != &d->page_list); i++ ) { @@ -2300,7 +2299,12 @@ void audit_domain(struct domain *d) if ( pt[i] & _PAGE_PRESENT ) { unsigned long l1pfn = pt[i]>>PAGE_SHIFT; - struct pfn_info *l1page = &frame_table[l1pfn]; + struct pfn_info *l1page; + + if (l1pfn>max_page) + continue; + + l1page = &frame_table[l1pfn]; if ( l1page->u.inuse.domain == d) adjust(l1page, 1, 1); @@ -2321,7 +2325,12 @@ void audit_domain(struct domain *d) if ( pt[i] & _PAGE_PRESENT ) { unsigned long l1pfn = pt[i]>>PAGE_SHIFT; - struct pfn_info *l1page = &frame_table[l1pfn]; + struct pfn_info *l1page; + + if (l1pfn>max_page) + continue; + + l1page = &frame_table[l1pfn]; if ( (l1page->u.inuse.domain != d) || (l1pfn < 0x100) || (l1pfn > max_page) ) -- 2.30.2